package com.zhu.controller;

import com.zhu.domain.Account;
import com.zhu.service.AccountService;
import com.zhu.service.impl.AccountServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

//声明该类为SPringMVC控制器组件，处理HTTP请求
@Controller
//类级别请求映射，所有方法的基础路径为/account
@RequestMapping("/account")
public class AccountController {
    //自动注入AccountService实现类，Spring通过类型自动装配

    //private AccountServiceImpl accountService;
    @Autowired
        private AccountService accountService1;


    /**
     *方法一：查询所有账户
     * @RequestMapping处理GET请求，路径为/account/findAll
     * @param model 用于向视图传递数据模型
     * @return 返回视图名称“list”，对应JSP页面
     */
    @RequestMapping("/findAll")
    public String findAll(Model model){

        //输出调试信息（生产环境建议使用日志框架）
        System.out.println("表现层，查询所有账户，，，");
        //调用服务层查询所有账户数据
        List<Account> list=accountService1.findAll();
        //将查询结果存入模型，键为“list”，视图层可通过${list}访问
        model.addAttribute("list",list);
        //视图解析器会拼接为：/WEB-INF/views/list.jsp
        return "list";
}
/**
 * 方法二：保存账户信息
 * @RequestMapping处理POST请求，路径为/account/save
 //* @param account通过表单数据自动绑定到Account对象
// * @param request获取请求上下文路径
// * @param response处理HTTP响应
 * @return void直接返回，通过重定向跳转
 */
@RequestMapping("/save")
    public void save(Account account, HttpServletRequest request, HttpServletResponse response)throws IOException{
    //调用服务层执行插入操作
    accountService1.saveAccount(account);
    //构建重定向路径，防止表单重复提交
    String redirectPath = request.getContextPath() + "/account/findAll";
    //发送302重定向响应
    response.sendRedirect(redirectPath);
    return;
}
}
